package com.matrix.draft.rabbitmqspringboot.rabbitmq.callback;

import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.Console;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Component;

/**
 * 发布确认(高级)的确认回调
 */
@Component
public class AdvanceConfirmCallback implements RabbitTemplate.ConfirmCallback {

    /**
     * 回调方法
     *
     * @param correlationData 消息发布相关数据(这个CorrelationData里面的数据是在发布的时候自己填写的)
     * @param isSuccess       交换机是否收到了消息
     * @param cause           如果没成功,原因字符串
     */
    @Override
    public void confirm(CorrelationData correlationData, boolean isSuccess, String cause) {
        Assert.notNull(correlationData);
        String id = correlationData.getId();
        if (isSuccess) {
            Console.log("交换机确认收到消息,ID为: {}", id);
        } else {
            Console.error("交换机接收消息失败,ID为: {}", id);
        }

    }

}
